#定义好班级同学人员列表，让同学们互送礼物，要求：不能自己送自己，随机送礼，一个人只能收一份礼物。
#定义好人员名单，循环送礼物的人，随机挑选一个收礼物的，最终打印送礼和收礼的关系
import random

#用一个空字典保存最终结果
result = {}
#最开始的人员礼物关系名单
name_dict = {"zyq":"zyq","ysj":"ysj","qy":"qy","xjw":"xjw","cyl":"cyl","zzz":"zzz"}
#将上面分成user_list 和 gift_list两个列表
user_list = list(name_dict.keys())
gift_list = list(name_dict.values())
# for k,v in name_dict.items():
#     user_list.append(k)
#     gift_list.append(v)

while True:
    #分两种情况讨论 如果人员名单大于两个人
    if len(user_list) != 2:
        #在礼物名单挑选一个人
        random_gift = random.choice(gift_list)
        #一直和人员名单第一个比较 不同直接送礼物 相同则送给第二个人
        if name_dict[user_list[0]] != random_gift:
            result[user_list[0]]=random_gift
            #收到则踢出人员名单 第一个人发生变化
            user_list.pop(0)
        else:
            result[user_list[1]]=random_gift
            user_list.remove(user_list[1])
        #送出去的礼物踢出礼物名单
        gift_list.remove(random_gift)
    else:
        #当只有两个人的时候 相同则交换 不同则直接送出礼物
        if name_dict[user_list[0]] == gift_list[0] or name_dict[user_list[1]] == gift_list[1]:
            result[user_list[0]] = gift_list[1]
            result[user_list[1]] = gift_list[0]
        else:
            result[user_list[0]] = gift_list[0]
            result[user_list[1]] = gift_list[1]
            #一定要写break 不然死循环
        break
for k,v in result.items():
    print(f"同学{k},收到{v}的礼物啦!")




